import * as maptalks from "maptalks";

class draw {
  /**
   * 创建绘画工具
   * @param mode  following modes: [Point, LineString, Polygon, Circle, Ellipse, Rectangle, ArcCurve, QuadBezierCurve, CubicBezierCurve]
   * @returns {*}
   */
  ctCreateDrawTool(mode, symbol) {
    if (!mode) {
      mode = 'Point'
    }
    return new maptalks.DrawTool({
      once: true,
      mode: mode,
      symbol: symbol,
    }).disable();
  }

  /**
   * 设置 绘画 图形模式
   * @param drawTool
   * @param mode
   */
  ctSetMode(drawTool, mode) {
    drawTool.setMode(mode)
  }

  /**
   * 放到 地图 显示
   * @param drawTool
   * @param map
   */
  ctAddTo(drawTool, map) {
    drawTool.addTo(map)
  }

  /**
   * 开始绘画
   * @param drawTool
   */
  ctStart(drawTool) {
    drawTool.enable();
  }

  /**
   * 结束绘画
   * @param drawTool
   */
  ctFinish(drawTool) {
    drawTool.disable();
  }

  /**
   * 设置 绘画 状态
   * @param drawTool
   * @param flag  true:完成一个图形就 禁用 绘画工具 ； false:可以一直画多个图形 而不禁用
   */
  ctSetOnce(drawTool, flag) {
    drawTool.setOptions({once: flag})
  }

  /**
   * 将几何图形添加至图层
   * @param layer
   * @param geometry
   */
  ctAddGeometry(layer, geometry) {
    layer.addGeometry(geometry)
  }

  /**
   * 添加绘画事件监听
   * @param drawTool
   * @param event  目前支持 'drawend' (结束绘画)  'drawstart' （开始绘画）
   * @param callback 回调函数
   */
  ctAddListen(drawTool, event, callback) {
    drawTool.on(event, (param) => {
      callback(param)
    });
  }
}

export default new draw()
